package com.leetcode.binarytree;

import com.leetcode.datastructure.TreeNode;

/**
 * @author: ZhouBert
 * @date: 2019/10/27
 * @description:	226. 翻转二叉树
 * 翻转一棵二叉树。
 * 谷歌：我们90％的工程师使用您编写的软件(Homebrew)，但是您却无法在面试时在白板上写出翻转二叉树这道题，这太糟糕了
 * 过去五到十年，是中国互联网爆发性增长的时间，除了互联网巨头的飞速崛起，资本也催生了大量的创业公司。但是这些创业公司大部分都没有在做技术驱动的事儿，多数创业都是利用技术解决人们衣食住行和社交娱乐的需求，这些业务在不成规模的情况下，很少会使用到基础的、
 * 复杂的技术和算法。各个领域开源丛生，搭个架子就可以写业务代码了，至于用户和数据规模，那得公司能活到那个份上，95% 的公司都在没有遭遇 C10K 的时候就已经消失了。
 * 但是不要紧，因为新的创业公司又出现了，创业者和他的员工开始继续做类似的事情，所以很多程序员不知道 C10K 和二叉树就是很正常的事情了，因为不需要嘛。
 * 时至今日，大公司已经起来了，资本变得冷静，衣食住行问题都解决的差不多了，缺乏技术、内容和数据门槛的创业会越来越少，创新和基础行业的突破迫在眉睫，重复写那些 CRUD 代码的好日子真的不远了，虽然现在即使大型科技公司也存在这样的工种，但是工具化势在必行，总有一天你会发现自己的编程工作就被别的什么东西取代了……呢？
 * 这么看来，是不是应该去学习和理解那些基础的概念、算法和引擎呢？很多人会说，需要的时候再学吧，那万一你学不会呢？毕竟知道和掌握是两个相差十万八千里的概念，你写过反转二叉树的代码，至少说明你是有能力学会的，我想这也是很多大公司招聘时面试算法的原因吧。
 *
 */
public class InvertBinaryTree226A {

	/**
	 * TODO:递归：子树就是更小的二叉树
	 * @param root
	 * @return
	 */
	public TreeNode invertTree(TreeNode root) {
		if (root==null){
			return null;
		}
		TreeNode tempLeft=root.left;
		root.left=invertTree(root.right);
		root.right=invertTree(tempLeft);
		return root;
	}

	public static void main(String[] args) {

	}
}
